home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / dev / gui / gui4cli.lha / Gui4Cli / G4C / CED / JoinGuide.g < prev    next >
Text File  |  1999-04-21  |  5KB  |  200 lines

  1. G4C
  2.  
  3. WINBIG 155 73 338 94 'Join nodes into an AmigaGuide'
  4. wintype 11110001
  5. resinfo 8 660 270
  6. box 0 0 0 0 out button
  7.  
  8. ; =======================================================
  9. ;       on load / close
  10. ; =======================================================
  11.  
  12. xonload
  13. setgad JoinGuide.g 1/4 hide  ; hide lvs
  14. setgadvalues joinguide.g
  15. sendrexx $cedbar.gc/cedport 'status filename'
  16. path = $$rexxret
  17. extract path path path
  18. guiopen JoinGuide.g
  19. update joinguide.g 10 $path
  20.  
  21. xonclose
  22. guiquit JoinGuide.g
  23.  
  24. ; =======================================================
  25. ;       guide name gadget
  26. ; =======================================================
  27.  
  28. CTEXT 14 4 "Enter name of dir for nodes:" #screen 8 2 0 0001
  29.  
  30. XTEXTIN 10 16 290 14 "" dirname "" 100
  31. gadid 10
  32. gosub JoinGuide.g prepdir
  33. setgad JoinGuide.g 11 on
  34.  
  35. XBUTTON 301 16 25 14 "<"
  36. ReqFile -1 -1 300 -30 "Choose a dir:" DIR dirname '$path'
  37. gosub JoinGuide.g prepdir
  38.  
  39. xroutine prepdir
  40. extract dirname unquote dirname
  41. if $dirname[-1][1] == '/'
  42.    cutvar dirname cut char -1 ''
  43. endif
  44. update JoinGuide.g 10 $dirname
  45.  
  46. ; =======================================================
  47. ;       dir name gadget
  48. ; =======================================================
  49.  
  50. CTEXT 12 32 "Enter name for new Guide:" #screen 8 2 0 0001
  51.  
  52. XTEXTIN 10 44 290 14 "" guidename "Ram:Sample.guide" 100
  53. gadid 11
  54.  
  55. XBUTTON 302 44 25 14 "<"
  56. ReqFile -1 -1 300 -30 "Choose name for new Guide:" SAVE guidename 'Ram:'
  57. update JoinGuide.g 11 $guidename
  58.  
  59. ; =======================================================
  60. ;       status 
  61. ; =======================================================
  62.  
  63. CTEXT 11 62 "Status:" #screen 8 2 0 0001
  64.  
  65. TEXT 10 74 238 14 "Idle." 40 BOX
  66. gadid 12
  67.  
  68. ; =======================================================
  69. ;       listviews for data handling
  70. ; =======================================================
  71.  
  72. XLISTVIEW 0 0 343 72 '' lv1 '' 0 MULTI    ; temp
  73. gadid 1
  74. XLISTVIEW 0 0 343 72 '' lv2 '' 0 MULTI    ; main file
  75. gadid 2
  76. XLISTVIEW 0 0 343 72 '' file '' 0 DIR    ; to get node names
  77. gadid 3
  78. XLISTVIEW 0 0 343 72 '' file '' 0 MULTI    ; for the index
  79. gadid 4
  80.  
  81. ; =======================================================
  82. ;       The routine that does the actual joining
  83. ; =======================================================
  84.  
  85. XBUTTON 254 74 74 14 "Join!"
  86.  
  87.    if $guidename < ' '
  88.    or $dirname < ' '
  89.    orifexists dir '~$dirname'
  90.       ezreq 'Incorrect parameters!' OK ''
  91.       stop
  92.    endif
  93.    update joinguide.g 12 'Seting up..'
  94.  
  95.    olddir = $$g4c.dir
  96.    cd $dirname
  97.  
  98.    ; initiate index
  99.    lvuse joinguide.g 4
  100.    lvadd '\n@NODE INDEX\n\tGuide INDEX :\n'
  101.  
  102.    ; initiate main guide
  103.    lvuse joinguide.g 2
  104.    lvadd '@DATABASE\n@INDEX INDEX'
  105.  
  106.    ; get file list
  107.    lvuse joinguide.g 3
  108.    lvdir #$dirname
  109.    lvmode MULTI
  110.  
  111.    ; find header
  112.    lvsearch CBAG_Header ci first
  113.    if $$lv.line > ''
  114.       update joinguide.g 12 'Adding header..'
  115.       lvuse joinguide.g 1
  116.       lvchange CBAG_Header
  117.       ; delete previous index entry
  118.       lvsearch @INDEX ci first
  119.       if $$lv.line > ''
  120.          lvdel -1
  121.       endif
  122.       lvgo first
  123.       lvclip cut -1 add joinguide.g 2
  124.       lvuse joinguide.g 3
  125.       lvdel -1
  126.    endif
  127.    
  128.    ; find main
  129.    lvsearch "MAIN " ci first
  130.    while $$lv.line > ''
  131.    and $$search.pos != 0
  132.       lvsearch "MAIN " ci next
  133.    endwhile
  134.    if $$lv.line > ''
  135.       update joinguide.g 12 'Adding node MAIN..'
  136.       lvuse joinguide.g 1
  137.       lvchange MAIN
  138.       lvinsert 0 '@NODE MAIN'
  139.       lvadd '@ENDNODE'
  140.       lvgo first
  141.       lvclip copy -1 add joinguide.g 2
  142.       lvuse joinguide.g 3
  143.       lvdel -1
  144.    else
  145.       update joinguide.g 12 'Could not find node MAIN!'
  146.       stop
  147.    endif
  148.    
  149.    lvuse joinguide.g 3
  150.    lvmode DIR
  151.    lvmulti all
  152.    
  153.    lvmulti first
  154.    while $$lv.type == DIR
  155.       lvmulti next
  156.    endwhile
  157.  
  158.    while $$lv.line > ''
  159.  
  160.       lvuse joinguide.g 1
  161.       extract file file file
  162.       if $file == INDEX
  163.          ; nop
  164.       else
  165.          update joinguide.g 12 'Processing node $file'
  166.          lvchange $file
  167.          lvinsert 0 '@NODE $file'
  168.          lvadd '@ENDNODE'
  169.          lvgo first
  170.          lvclip copy -1 add joinguide.g 2
  171.          ; make index entry
  172.          lvuse joinguide.g 4
  173.          lvadd '\t@{" $file " link \"$file\"}'
  174.       endif
  175.       
  176.       lvuse joinguide.g 3
  177.       lvmulti next
  178.  
  179.    endwhile
  180.  
  181.    update JoinGuide.g 12 'Adding index..'
  182.    lvuse joinguide.g 4
  183.    lvadd '@ENDNODE\n'
  184.    lvgo first
  185.    lvclip copy -1 add joinguide.g 2
  186.  
  187.    update JoinGuide.g 12 'Saving $guidename'
  188.    lvuse joinguide.g 2
  189.    lvsave $guidename
  190.    update JoinGuide.g 12 'Freeing resources..'
  191.    lvclear
  192.    lvuse joinguide.g 1 
  193.    lvclear
  194.    lvuse joinguide.g 4
  195.    lvclear
  196.  
  197.    update JoinGuide.g 12 "Finished."
  198.    cd $olddir
  199.  
  200.